package com.mmaingenieria.MMAGestor.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.mmaingenieria.MMAGestor.beans.Usuario;
import com.mmaingenieria.MMAGestor.controller.usuarios.ListarUsuariosServlet;
import com.mmaingenieria.MMAGestor.model.ModeloUsuario;

public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ModeloUsuario modeloUsuario = new ModeloUsuario();
       
    public LoginServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    
        try{  	
            String _user = request.getParameter("usuario");//recojemos valores del formulario
            String _pass = request.getParameter("password"); //recojemos valores del formulario      
        	Usuario usuarioSesion = modeloUsuario.verificarLogin(_user, _pass);//Verifico si existe usuario y si está activo
        	if (usuarioSesion != null){
        		 HttpSession sesion = request.getSession(true); //si es un usuario valido creamos una sesion para guardar el usuario
                 sesion.setAttribute("usuarioSesion", usuarioSesion); //Guardo en sesion el usuario completo (tipo sesion, solo id, nombre rol  y estado.                
                 switch (usuarioSesion.getRol()){//Dependiendo que rol tenga lo envio a un servlet u a otro.
         			case Administrador:{
         				System.out.println("Logeado como Admin");
         				ListarUsuariosServlet listar = new ListarUsuariosServlet();
         				listar.doPost(request, response);
         			}break;
         			case Editor:{
         				System.out.println("Logeado como Editor");
         			}break;
         			case Cliente:{
         				System.out.println("Logeado como Cliente");
         			}break;
         			case Consultor:{
         				System.out.println("Logeado como Consultor");
         			}break;
                 }	
        	}else{//sino es un usuario logeable (mal user y pass o no está activo)
        		System.out.println("Logeo invalido");
        		RequestDispatcher dispatcher = null;
        		request.setAttribute("msg", "Validación incorrecta de usuario y/o contraseña, vuelva a intentarlo por favor.");
                dispatcher = request.getRequestDispatcher("index.jsp");
                dispatcher.forward(request, response);
        	}
        }catch (Exception e){
        	//TODO PONER LOGGER Y LLEVAR A PAGINA DE ERROR
        	e.printStackTrace();
        }        
	}

}
